package benzapp.overlay;

import java.util.ArrayList;
import java.util.Iterator;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.widget.Toast;
import benzapp.db.Distributore;
import benzapp.pack.BenzAppActivity;

import com.google.android.maps.ItemizedOverlay;

/**
 *@author Michele Segata 
 * 
 * */


public class ListaOverlay extends ItemizedOverlay<DistributoreOverlay> {
	
	Drawable marker;
	Context context;
	ArrayList<DistributoreOverlay> list = new ArrayList<DistributoreOverlay>();
	
	static final String PATTERN_PREZZI = "\\d\\.\\d?\\d?\\d?";
	
	public ListaOverlay(Drawable defaultMarker, Context context) {
		super(boundCenterBottom(defaultMarker));
		this.marker = defaultMarker;
		this.context = context;
		Log.d("overlay", "creata nuova ListaOverlay");
	}

	@Override
	protected DistributoreOverlay createItem(int i) {
		
		return list.get(i);
	}

	@Override
	/**
	 * ritorna la dimensione della lista degli overlay
	 * 
	 * */
	public int size() {
		
		return list.size();
	}
	
	/**
	 * metodo che aggiunge l'overlay alla ItemizedOverlay
	 * @author Michele Segata
	 * */
	public void addOverlay(DistributoreOverlay overlay){
				
		list.add(overlay);
		Log.d("overlay",overlay.toString());
		populate();		
	}

	/**
	 * metodo che aggiunge tutti gli elementi dell'ArrayList passato come parametro alla 
	 * lista degli Overlay
	 * @author Michele Segata
	 * */	
	
	public void addOverlayList(ArrayList<DistributoreOverlay> list){
		
		//prendo iteratore per la lista
		Iterator<DistributoreOverlay> i=list.iterator();
		
		while(i.hasNext()){
			
			//scorro la lista e aggiungo
			addOverlay(i.next());		
			Log.d("Overlay", "Overlay aggiunto");
		}
		
		
	}
	
	@Override
	/**
	 * @author valentino
	 * Funzione chiamata quando un marker dei distributori viene cliccato.
	 * Viene creato un dialog con i prezzi relativi al distributore e la data dell'ultimo aggiornamento
	 * dei valori.
	 * Cliccando il bottone "Modifica" viene generato un' altro dialog simile al precedente ma con la
	 * possibilità di modificare i prezzi, i quali in caso di conferma vengono inseriti nel db.  
	 */
	protected boolean onTap(int index) {
		
		DistributoreOverlay item = createItem(index);
		Log.d("overlay", "preso l'overlayitem "+index);
		//Toast.makeText(context, "Hai cliccato l'OverlayItem "+item.getTitle(), Toast.LENGTH_SHORT).show();
		
		final Distributore distributore = item.getDistributore();
		try {
			((BenzAppActivity) context).showDistributoreDialog(BenzAppActivity.MODALITÀ_VISUALIZZA, distributore);
		} catch (Exception e) {
			Toast.makeText(context, "ArrayIndex out of box", Toast.LENGTH_LONG);
			Log.e("ArrayIndex out of box", e.toString());
		}
		
		return true;
	}
	
	/**
	 * metodo che svuota la lista degli overlay
	 * @author Michele Segata
	 * */
	public void clearList(){
		
		list.clear();
		Log.d("Lista overlay", "Lista svuotata");
		
	}
	
}
